#include <stdio.h>

void putIncludes (char* outFileLocation);
void declareVars (char* pseudoFileLocation,char* outFileLocation);
void translateBody (char* pseudoFileLocation,char* outFileLocation);
void declareConsts (char* pseudoFileLocation,char* outFileLocation);
void translateFunctions (char* pseudoFileLocation,char* outFileLocation,int *numOfFunctions);
void translateProcesses (char* pseudoFileLocation,char* outFileLocation,int *numOfProcesses,int funcsToPass);

//Binded words functions

void epilexe (char* lineToProcess, FILE *cFile,int *tabsCounter,int *firstCase);
void periptosi (char* lineToProcess, FILE *cFile,int *tabsCounter,int *firstCase);
void periptosi_allios (FILE *cFile,int *tabsCounter);
void an (char* lineToProcess,FILE *cFile,int *tabsCounter);
void allios_an (char* lineToProcess,FILE *cFile,int *tabsCounter);
void allios (FILE *cFile,int *tabsCounter);
void arxi_epanalipsis (FILE *cFile,int *tabsCounter);
void mexris_otou (char* lineToProcess,FILE *cFile,int *tabsCounter);
void gia (char* lineToProcess,FILE *cFile,int *tabsCounter);
void oso (char* lineToProcess,FILE *cFile,int *tabsCounter);
void anathesi_timis (char* lineToProcess,FILE *cFile,int *tabsCounter);
void anathesi_timis_c (char* lineToProcess,FILE *cFile,int *tabsCounter);
void telos_epilogon (FILE *cFile,int *tabsCounter);
void telos_an (FILE *cFile,int *tabsCounter);
void telos_epanalipsis (FILE *cFile,int *tabsCounter);
void grapse (char* lineToProcess,FILE *cFile,int *tabsCounter);
void diavase (char* lineToProcess,FILE *cFile,int *tabsCounter);
void kalese (char* lineToProcess,FILE *cFile,int *tabsCounter);

//Declare variables functions
void pragmatikes (char* lineToProcess, FILE *cFile);
void akeraies (char* lineToProcess, FILE *cFile);
void xaraktires (char* lineToProcess, FILE *cFile);

//Functions for processes
void declareProcesses (char* pseudoFileLocation,char* outFileLocation,int *numOfProcesses);
void declareFunctions (char* pseudoFileLocation,char* outFileLocation,int *numOfFunctions);
void pragmatikes_f (char* lineToProcess, FILE *cFile,int functionNum);
void akeraies_f (char* lineToProcess, FILE *cFile,int functionNum);
void xaraktires_f (char* lineToProcess, FILE *cFile,int functionNum);
void anathesi_timis_f (char* lineToProcess,FILE *cFile,int *tabsCounter,int functionNum);
void anathesi_timis_c_f (char* lineToProcess,FILE *cFile,int *tabsCounter,int functionNum);
void an_f (char* lineToProcess,FILE *cFile,int *tabsCounter,int functionNum);
void allios_an_f (char* lineToProcess,FILE *cFile,int *tabsCounter,int functionNum);
void mexris_otou_f (char* lineToProcess,FILE *cFile,int *tabsCounter,int functionNum);
void gia_f (char* lineToProcess,FILE *cFile,int *tabsCounter,int functionNum);
void oso_f (char* lineToProcess,FILE *cFile,int *tabsCounter,int functionNum);
void grapse_f (char* lineToProcess,FILE *cFile,int *tabsCounter,int functionNum);
void diavase_f (char* lineToProcess,FILE *cFile,int *tabsCounter,int functionNum);


void pragmatikes_p (char* lineToProcess, FILE *cFile,int functionNum);
void akeraies_p (char* lineToProcess, FILE *cFile,int functionNum);
void xaraktires_p (char* lineToProcess, FILE *cFile,int functionNum);
void anathesi_timis_p (char* lineToProcess,FILE *cFile,int *tabsCounter,int functionNum);
void anathesi_timis_c_p (char* lineToProcess,FILE *cFile,int *tabsCounter,int functionNum);
void an_p (char* lineToProcess,FILE *cFile,int *tabsCounter,int functionNum);
void allios_an_p (char* lineToProcess,FILE *cFile,int *tabsCounter,int functionNum);
void mexris_otou_p (char* lineToProcess,FILE *cFile,int *tabsCounter,int functionNum);
void gia_p (char* lineToProcess,FILE *cFile,int *tabsCounter,int functionNum);
void oso_p (char* lineToProcess,FILE *cFile,int *tabsCounter,int functionNum);
void grapse_p (char* lineToProcess,FILE *cFile,int *tabsCounter,int functionNum);
void diavase_p (char* lineToProcess,FILE *cFile,int *tabsCounter,int functionNum);



char * goodArrayBrackets(char *token,int functionNum);
char* goodArrayBracketsP(char *token1,int functionNum);
int  searchVarLists (char *token);